package com.web.kdl.common.result;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 游标分页结果封装类
 *
 * @param <T> 数据记录类型
 * @Author： shulibin
 * @Date： 2025/10/24 16:30
 * @Describe：用于封装游标分页查询的结果数据
 */
@Data
@Builder
public class CursorPageResult<T> {

    /**
     * 当前页数据记录列表
     */
    private List<T> records;

    /**
     * 是否存在下一页数据
     */
    private Boolean hasNext;

    /**
     * 是否存在上一页数据
     */
    private Boolean hasPrev;

    /**
     * 下一页游标值，用于获取下一页数据
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime nextCursor;

    /**
     * 上一页游标值，用于获取上一页数据
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime prevCursor;
    /**
     * 上一页游标临界 id
     */
    private String prevId;

    /**
     * 下一页游标临界 id
     */
    private String nextId;

    /**
     * 总记录数
     */
    private Long total;
}
